#ifndef _VN_SFML_SPRITE_H_
#define _VN_SFML_SPRITE_H_

#include "Sprite.h"
#include "SFMLDrawable.h"

namespace vn
{
	class SFMLSprite : public vn::Sprite, public vn::SFMLDrawable
	{
	public:
		SFMLSprite(float p_layer);
		virtual ~SFMLSprite(void);

		virtual void draw(sf::RenderWindow&);
		virtual void draw(sf::RenderTexture&);

		void setTexture(const sf::Texture&);

		virtual void setTextureRect(int x, int y, int w, int h);
		virtual void setTextureRect(const vn::IntRect& p_textureRect);
		virtual void setAngle(float p_angle);
		virtual void setScale(const vn::Scale& p_scale);
		virtual void setScale(float x, float y);
		virtual void setPosition(const vn::Vector2& p_position);
		virtual void setPosition(float x, float y);
		virtual void translate(const vn::Vector2& p_velocity);
		virtual void translate(float x, float y);
		virtual void setOrigin(const vn::Vector2& p_origin);
		virtual void setOrigin(float x, float y);
		virtual void setColor(const vn::Color& p_color);
		virtual void setDoRender(bool p_value);

		virtual const vn::Vector2 getPosition() const;
		virtual const vn::Scale getScale() const;
		virtual const float getAngle() const;
		virtual const vn::IntRect getTextureRect() const;
		virtual const vn::Vector2 getOrigin() const;
		virtual const vn::Color getColor() const;

		const sf::Sprite& getSprite() const			{ return m_sprite; }

	protected:
		sf::Sprite m_sprite;
	};
}
#endif // _VN_SFML_SPRITE_H_